//#include <stdio.h>
//#include <stdlib.h>
//
//#define min(a, b) ((a) < (b) ? (a) : (b))
//
//int main() 
//{
//    int n, k;
//    scanf_s("%d %d", &n, &k);
//    long long* a = (long long*)malloc((n - 1) * sizeof(long long));
//    for (int i = 0; i < n - 1; i++)
//    {
//        scanf_s("%lld", &a[i]);
//    }
//
//    long long* pref = (long long*)malloc((n + 1) * sizeof(long long));
//    pref[1] = 0;
//    for (int i = 2; i <= n; i++) 
//    {
//        pref[i] = pref[i - 1] + a[i - 2]; 
//    }
//
//    long long ans = pref[n];
//
//    for (int x = 1; x <= n; x++) 
//    {
//        int y = min(n, x + k); 
//        long long time = pref[x] + (pref[n] - pref[y]);
//        if (time < ans) 
//        {
//            ans = time;
//        }
//    }
//    printf("%lld\n", ans);
//    free(a);
//    free(pref);
//
//    return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//
//#define min(a, b) ((a) < (b) ? (a) : (b))
//
//int main()
//{
//    int n, k;
//    scanf_s("%d %d", &n, &k);
//
//    long long* a = (long long*)malloc((n - 1) * sizeof(long long));
//    for (int i = 0; i < n - 1; i++)
//    {
//        scanf_s("%lld", &a[i]);
//    }
//
//    long long* pref = (long long*)malloc((n + 1) * sizeof(long long));
//    pref[1] = 0;
//    for (int i = 2; i <= n; i++)
//    {
//        pref[i] = pref[i - 1] + a[i - 2]; 
//    }
//
//    long long ans = pref[n];
//
//    for (int x = 1; x <= n; x++)
//    {
//        int y = min(n, x + k); 
//        long long time = pref[x] + (pref[n] - pref[y]);
//        if (time < ans) 
//        {
//            ans = time;
//        }
//    }
//    printf("%lld\n", ans);
//    free(a);
//    free(pref);
//    return 0;
//}

#include <stdio.h>
#include <stdlib.h>

int main() 
{
    int n;
    scanf_s("%d", &n);

    long long* a = (long long*)malloc(n * sizeof(long long));
    for (int i = 0; i < n; i++)
    {
        scanf_s("%lld", &a[i]);
    }

    long long* stack = (long long*)malloc(n * sizeof(long long));
    int top = 0;
    long long ans = 0;

    for (int i = 0; i < n; i++) 
    {
        stack[top++] = a[i];
        while (top >= 2) 
        {
            long long top1 = stack[top - 1];
            long long top2 = stack[top - 2];
            long long sum = top1 + top2;
            if (sum > 0) 
            {
                ans += sum;
                top -= 2; 
                stack[top++] = sum; 
            }
            else
            {
                break;
            }
        }
    }
    printf("%lld\n", ans);
    free(a);
    free(stack);
    return 0;
}